package zsc.ruanc.practicaltraining.mapper;

import org.apache.ibatis.annotations.Select;
import zsc.ruanc.practicaltraining.model.domain.TUser;
import zsc.ruanc.practicaltraining.model.vo.UserVo;

import java.util.Date;
import java.util.List;

public interface UserMapper {

    /**
     * 查询用户
     * @param id
     * @return
     */
    public TUser selectById(int id);

    public TUser selectByName(String username);

    public TUser selectByEmail(String email);

    // 查询这个人头是否存在
    public boolean checkUser(int id);

    // 根据userId查用户名 文章模块用到 查作者名
    public String selectNameByUserId(int userId);

    /**
     * 分页查询用户
     *
     * @return
     */
    public List<TUser> selectPage(String text);

    /**
     * 查看用户是否存在
     * @param name
     * @return
     */
    public boolean checkUsername(String name);

    /**
     * 查看邮箱是否存在
     * @param email
     * @return
     */
    public boolean checkEmail(String email);

    /**
     * 修改用户名
     * @param id
     * @param name
     * @return
     */
    public int updateUsername(int id, String name);

    /**
     * 修改密码
     * @param email
     * @param password
     * @return
     */
    public int updatePassword(String email, String password);

    public int updatePassword2(int id, String password);

    /**
     * 修改邮箱
     * @param id
     * @param email
     * @return
     */
    public int updateEmail(int id, String email);

    /**
     * 激活和封号
     * @param id
     * @param flag
     * @return
     */
    public int updateValid(int id, boolean flag);

    /**
     * 用户头像
     * @param id
     * @param path
     * @return
     */
    public int updatePhoto(int id, String path);

    /**
     * 修改生日
     * @param id
     * @param date
     * @return
     */
    public int updateBirthday(int id, Date date);



    /**
     * 增加用户
     * @param user
     * @return
     */
    public boolean insertUser(TUser user);

    /**
     * 登录
     * @param email
     * @param password
     * @return
     */
    public TUser login(String email, String password);

    public boolean updateUserInfo(UserVo userVo);

    public List<Integer> allId();

    // 更改用户权限
    public int updateRole(int userId, int role);


    // 寻找管理员的id
    public Integer[] findAdmin();

}
